package com.gopay.common.trace.anotation;

import com.gopay.common.trace.GopayTracerType;
import org.springframework.stereotype.Component;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 方法追踪注解，记录方法内订单状态变动，方法耗时等，到日志
 * Created by zyt on 2017/11/30.
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Component
public @interface GopayTracer {
    String paramKey() default "";
//    Class paramClazz() default Object.class;
    String tracerType() default GopayTracerType.TIME_TRACE;

    /**
     * 专门用来抓取orderid的 spel表达式
     * @return
     */
    String orderIdSpel() default "";

    /**
     * 是否有可能是多线程  默认false
     * 如果设置为true 则当此本地方法执行之后  即使没有tid  会生成tid 使 该方法 作为 rootspan
     * 为了处理 多线程跑任务时候的 本地方法的采集问题
     * @return
     */
    boolean  multipleThread() default  false;

}
